/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package BD;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author CORE
 */
public class Caixa_Iten extends bd {
//id_caixa_iten, id_caixa, id_pedido, valor, data, meiopagamento
private int   id_caixa_iten =0;
private int   id_caixa      =0;
private int   id_pedido     =0;
private float valor         =0;  
private Timestamp data       ;
private String tipopgto;       
private pedidos pedido;
public  String TpPagamento []= {"A VISTA","A PRAZO","CARTÃO DE CREDITO","CARTÃO DE DÉBITO"};
public  String cliente_mesa = "";

    public pedidos getPedido() {
        return pedido;
    }

    public void setPedido(pedidos pedido) {
        this.pedido = pedido;
    }

private utilsPim  utls = new utilsPim();
    public int getId_caixa_iten() {
        return id_caixa_iten;
    }

    public void setId_caixa_iten(int id_caixa_iten) {
        this.id_caixa_iten = id_caixa_iten;
    }

    public int getId_caixa() {
        return id_caixa;
    }

    public void setId_caixa(int id_caixa) {
        this.id_caixa = id_caixa;
    }

    public int getId_pedido() {
        return id_pedido;
    }

    public void setId_pedido(int id_pedido) {
        this.id_pedido = id_pedido;
    }

    public float getValor() {
        return valor;
    }

    public void setValor(float valor) {
        this.valor = valor;
    }

    public Timestamp getData() {
        return data;
    }

    public void setData(Timestamp data) {
        this.data = data;
    }

    public String getTipopgto() {
        return tipopgto;
    }

    public void setTipopgto(String tipopgto) {
        this.tipopgto = tipopgto;
    }
    
    public boolean incluir() {            
        try {
            if (!estaConectado()) 
                conecta();          
            stmt = getConexao().createStatement();          
//id_caixa_iten, id_caixa, id_pedido, valor, data, tipopgto
            sql = "INSERT INTO caixa_iten "
                    +"(id_caixa_iten, id_caixa, valor, data, tipopgto, id_pedidos)"
                    + "VALUES ((select coalesce(max(id_caixa_iten)+1,1) from caixa_iten),"
                    +"(select id_caixa from caixa where caixa.aberto = true), "                    
                    +"'"+ Float.toString(this.getValor())+"',"
                    +"'"+ utls.getDataHoraHoje()+"',"
                    +"'"+ this.getTipopgto()+"',"                 
                    +"'"+ Integer.toString(this.getId_pedido())+"');"            
                    
                    ;
            stmt.executeUpdate(sql);
            stmt.close();
            return true;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }
    }


    public ResultSet consultar() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql = " SELECT caixa_iten.*,                  "+
                  " coalesce(clientes.nome,cast(pedidos.mesa as varchar(20)))as nome"+
                  " FROM caixa_iten                                                 "+
                  " inner join pedidos on (pedidos.id_pedidos = caixa_iten.id_pedidos) "+
                  " left join clientes on (pedidos.id_clientes=clientes.id_clientes) "+
                  " WHERE  caixa_iten.id_caixa =(select id_caixa from caixa where caixa.aberto = true) ";
            
//            if (! this.descricao.equals("") ){
//            sql = sql + " AND descricao like  '%"+this.getDescricao()+"%';";
//            }
            
            rs = stmt.executeQuery(sql);
            return rs;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Caixa item Não foi possível executar a Query \n" + objErro.getMessage());
            return null;
        }
        
    }
    public ArrayList<Caixa_Iten> getItens(){
        ArrayList itens = new ArrayList();
        ArrayList<pedidos> ltpd = new ArrayList<pedidos>();
        rs = this.consultar();
        try{//id_caixa_iten, id_caixa, id_pedido, valor, data, tipopgto
            while(rs.next()){
                Caixa_Iten obj  = new Caixa_Iten();
                pedidos  objpd  = new pedidos();
                ltpd            = new ArrayList<pedidos>();                  
                obj.setId_caixa_iten(rs.getInt("id_Caixa_iten"));
                obj.setId_caixa(rs.getInt("id_Caixa"));
                obj.setId_pedido(rs.getInt("id_pedidos"));
                obj.setValor(rs.getFloat("valor"));
                obj.setData(rs.getTimestamp("data"));
                obj.setTipopgto(rs.getString("tipopgto"));
                obj.cliente_mesa =rs.getString("nome");
                

                objpd.setId_pedidos(rs.getInt("id_pedidos"));
                objpd.setSiuacao("F");
                ltpd = objpd.getItens();                                
                if(ltpd.size()>0)
                    obj.setPedido(ltpd.get(0));
                
                itens.add(obj);               
            }
            stmt.close();
            
            disconecta();
        }
        catch(SQLException erro){
            msgErro = erro.getMessage();            
            JOptionPane.showMessageDialog(null, erro.getMessage());
        }        
        return itens;
    }
    
    public boolean excluir() {
        if (!estaConectado()) {
            conecta();
        }        
        try {
            stmt = getConexao().createStatement();                      
            sql ="DELETE FROM caixa_iten "+                  
                 "WHERE id_caixa_iten =  "+ Integer.toString(this.id_caixa_iten);            
            stmt.execute(sql);                        
            return  true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }      

    } 
    public static void main(String []args){
//         sabores sab = new sabores();
         Caixa_Iten cxi = new Caixa_Iten();
         cxi.setId_caixa(1);
         cxi.setId_pedido(1);
         cxi.setValor(10);
         
         cxi.setTipopgto(cxi.TpPagamento[2]);
         cxi.incluir();
         

//         pedi.incluir();
         
        /*ArrayList<pedidos_Itens> list = new ArrayList<pedidos_Itens>();
        list = pedi.getItens();
        for (int i = 0; i < list.size(); i++) {
            JOptionPane.showMessageDialog(null, list.get(i).getDesc_pizzas());
            
        }*/

//        sab.setId_sabores(1);
//        sab.setDescricao("portugueza");
//        sab.incluir();
//        sab.alterar();
//        sab.excluir();
    }

    
}
